//请求开发环境的服务器的axios实例

import store from "@/store";
import axios from "axios";

import nProgress from "nprogress";
import "nprogress/nprogress.css";

//创建一个实例
const request = axios.create({
  //使用环境变量，来区分当前的环境，并拿到代理的前缀
  baseURL: process.env.VUE_APP_API,
  timeout: 9999,
});

//给实例配置拦截器 
request.interceptors.request.use(
  (config) => {
    //发送请求触发进度条启动
    nProgress.start();

    //每次发送请求的时候，在header中携带用户的临时标识
    // console.log(store);
    const userTempId = store.state.user.userTempId;
    config.headers.userTempId=userTempId;

    //每次发送请求的时候，在header中携带token
    const token = store.state.user.token;
    config.headers.token = token;

    return config;
  },
  (error) => {
    //触发响应以后，进度条结束
    nProgress.done();
    return Promise.reject(error);
  }
);

request.interceptors.response.use(
  (response) => {
    //触发响应以后，进度条结束
    nProgress.done();

    if (response.data.code === 200) {
      return response.data.data;
    } else {
      //自己封装一个错误对象
      return Promise.reject({ message: response.data.message });
    }
  },
  (error) => {
    //触发响应以后，进度条结束
    nProgress.done();
    return Promise.reject(error);
  }
);

export default request;
